Random-access memory (RAM) is a data storage mechanism that allows stored data to be accessed at random instead of in sequence. RAM is conventionally employed to hold operating systems, application programs and data that are in current use by a computer system. This allocation of data storage responsibility allows such information to be speedily accessed by a computer system processor. This is because RAM is much faster to read from and write to than many other types of storage mechanisms.
Cache memory is random access memory (RAM) that a computer microprocessor can access even more quickly than regular RAM. Cache memory is used to temporarily store information. As the microprocessor processes data, it looks first to cache memory and if the data that is desired is found (such as from a previous reading of data), the more time-consuming reading of data from slower memory is avoided.
Cache memory is described in levels of closeness and accessibility to the microprocessor. An L1 cache is on the same chip as the microprocessor. L2 cache is usually a separate static RAM. The main RAM is usually a DRAM chip.
In many cases, especially after a system powerup, cache memory can be filled with random unknown data that can make reliable error checking very difficult. This is because the information that is to be checked for errors can contain the aforementioned random unknown data rendering reliable comparisons practically impossible.
Various techniques are currently employed as a means of ensuring the integrity of the data that is contained in RAM. In one conventional approach, data integrity checking (like parity checking) is used as a means of detecting errors particularly to combat problems such as soft errors (e.g., bit flips). Using this approach the data integrity bits are initialized when the RAM is written to.
However, in the case of cache memory, which is actually not directly written to by the computer processor, the loading of lines into cache memory must take place via an indirect mechanism. Some cache memories offer mechanisms that facilitate the forcible loading of lines into memory by the processor. However, these mechanisms are often cumbersome and complex.
Moreover, some cache architectures allow the user to “lock” known information into cache memory addresses. However, this approach involves a special mode of operation that requires special machine instructions and often involves complicated or cumbersome placement of known data in memory. It can also involve multiple iterations before data is finally locked into every line of cache memory. Alternatively, some cache memory designs employ the use of special hardware logic whose function is to initialize the cache to the proper state. However, this special hardware logic can be of such limited use that its cost/benefit ratio can be prohibitive.
The drawings referred to in this description should not be understood as being drawn to scale except if specifically noted.